package com.dys.designpattern.singleton;

import java.io.Serializable;

/**
 * @author 田建松
 * @version V1.0.0
 * @description 2.单例模式-懒汉式(线程不安全)
 * @date 2024/5/8
 * @since 1.0
 */
public class UnsafeThreadLazySingleton implements Serializable {

    /**
     * 1.私有构造器
     */
    private UnsafeThreadLazySingleton() {
        // 防止反射对于单例模式的破坏
        if (instance != null) {
            throw new RuntimeException("不允许非法访问");
        }
    }

    /**
     * 2.在当前类中创建私有静态的全局实例
     */
    private static UnsafeThreadLazySingleton instance;

    /**
     * 3.提供一个全局访问点,供外部获取单例对象
     *
     * @return 私有静态全局单例对象
     */
    public static UnsafeThreadLazySingleton getInstance() {
        if (instance == null) {
            instance = new UnsafeThreadLazySingleton();
        }
        return instance;
    }

    /**
     * 防止反序列化对于单例模式的破坏
     */
    private Object readResolve() {
        return instance;
    }
}
